#ifndef ALTERNATEDCONSTRAINT_H_
#define ALTERNATEDCONSTRAINT_H_

#include "constraint.h"
#include <boost/shared_ptr.hpp>

/// Constraint alternation, or logical ORing of constraints.
class AlternatedConstraint : public Constraint {
public:
	AlternatedConstraint(boost::shared_ptr<Constraint>, boost::shared_ptr<Constraint>);
	virtual ~AlternatedConstraint();

	bool consider(const Schedule&);
    std::string to_string();
    
private:
    /// constraint left to the OR operator
    boost::shared_ptr<Constraint> lconstraint_;
    
    /// constraint right to the OR operator
	boost::shared_ptr<Constraint> rconstraint_;
};

#endif
